From 143be56eaff641ae3faf17dade6d40a211b0d7e2 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 29 Aug 2016 10:34:32 +0300 Subject: [PATCH] Replace for loop with iterators --- src/cargo/core/resolver/encode.rs | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/cargo/core/resolver/encode.rs b/src/cargo/core/resolver/encode.rs index 1f79fbdc4..fc2c27737 100644 --- a/src/cargo/core/resolver/encode.rs +++ b/src/cargo/core/resolver/encode.rs @@ -96,18 +96,15 @@ impl EncodableResolve { g }; - let replacements = { - let mut replacements = HashMap::new(); - for &(ref id, ref pkg) in live_pkgs.values() { - if let Some(ref replace) = pkg.replace { - assert!(pkg.dependencies.is_none()); - if let Some(replace_id) = try!(lookup_id(replace)) { - replacements.insert(id.clone(), replace_id); - } + let replacements: HashMap<_, _> = try!(live_pkgs.values() + .filter_map(|&(ref id, pkg)| pkg.replace.as_ref().and_then(|replace| { + assert!(pkg.dependencies.is_none()); + match lookup_id(replace) { + Err(e) => Some(Err(e)), + Ok(None) => None, + Ok(Some(replace)) => Some(Ok((id.clone(), replace))) } - } - replacements - }; + })).collect()); let mut metadata = self.metadata.unwrap_or(BTreeMap::new()); -- 2.30.2